#include "factory/Fabrica.h"
#include "interfaces/IControladorRecurso.h"
#include "interfaces/IControladorUsuario.h"
#include "controllers/ControladorRecurso.h"
#include "controllers/ControladorUsuario.h"

Fabrica * Fabrica::instancia = NULL;

Fabrica::Fabrica() {
	this->cRecurso = NULL;
	this->cUsuario = NULL;
}

Fabrica * Fabrica::getInstancia() {

	if (instancia == NULL)
		  instancia = new Fabrica();
	   return instancia;
}

IControladorRecurso * Fabrica::getControllerRecurso()
{
	if(cRecurso == NULL)
	{
	 ControladorRecurso* aux = new ControladorRecurso();
	 cRecurso = dynamic_cast<IControladorRecurso*>(aux);
	}

	return cRecurso;
};

IControladorUsuario * Fabrica::getControllerUsuario()
{
	if(cUsuario == NULL)
	{
		ControladorUsuario* aux = new ControladorUsuario();
		cUsuario = dynamic_cast<IControladorUsuario*>(aux);
	}
	return cUsuario;
};

void Fabrica::setControladorRecurso(ControladorUsuario* cUsu){
	cUsu->setInterfazControladorRecurso((IControladorRecurso*)cRecurso);
}

void Fabrica::setControladorUsuario(ControladorRecurso* cRec){
	cRec->setInterfazControladorUsuario((ControladorUsuario*)cUsuario);
}

